Docker Compose হল একটি টুল যা একাধিক Docker কন্টেইনারকে সহজে পরিচালনা করতে ব্যবহৃত হয়। এটি একটি YAML ফাইল (docker-compose.yml
) ব্যবহার করে, যেখানে অ্যাপ্লিকেশনের বিভিন্ন সার্ভিসের কনফিগারেশন, নেটওয়ার্ক, এবং ভলিউম উল্লেখ করা হয়। Docker Compose ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলোকে আরো কার্যকরীভাবে এবং সংগঠিতভাবে ডিপ্লয় ও পরিচালনা করার সুবিধা প্রদান করে।
বহু-কন্টেইনার ব্যবস্থাপনা:
সার্ভিস ডিফিনিশন:
docker-compose.yml
ফাইলে প্রতিটি সার্ভিসের জন্য নির্দিষ্ট কনফিগারেশন দেওয়া হয়, যেমন ইমেজ, নেটওয়ার্ক, এবং ভলিউম।নেটওয়ার্কিং:
পরিবেশের ভেরিয়েবল:
সহজ শুরু এবং বন্ধ:
docker-compose.yml
ফাইল তৈরি করাএকটি নতুন ডিরেক্টরিতে docker-compose.yml
নামের একটি ফাইল তৈরি করুন। নিচে একটি উদাহরণ দেওয়া হলো:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my-network
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example
networks:
- my-network
cache:
image: redis:latest
networks:
- my-network
networks:
my-network:
Docker Compose অ্যাপ্লিকেশন শুরু করা:
এই কমান্ডটি docker-compose.yml
ফাইলের সমস্ত সার্ভিস চালু করবে এবং লগ দেখতে পারবেন।
docker-compose up
ব্যাকগ্রাউন্ডে চালানো:
-d
ফ্ল্যাগটি ব্যবহার করে কন্টেইনারগুলি ব্যাকগ্রাউন্ডে চালানো যাবে।
docker-compose up -d
কন্টেইনারগুলি বন্ধ করা:
এই কমান্ডটি সমস্ত কন্টেইনার বন্ধ করবে এবং পরিষ্কার করবে।
docker-compose down
কন্টেইনারের লগ দেখতে:
docker-compose logs
একটি নির্দিষ্ট সার্ভিসের লগ দেখতে:
docker-compose logs web
Docker Compose হল একটি গুরুত্বপূর্ণ টুল যা একাধিক Docker কন্টেইনারকে সহজে পরিচালনা করতে সহায়তা করে। এটি অ্যাপ্লিকেশন এবং তার সার্ভিসগুলির জন্য একটি পরিষ্কার এবং সংগঠিত কনফিগারেশন প্রদান করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে অনেক সহজ করে তোলে। Docker Compose ব্যবহার করে, আপনি একাধিক কন্টেইনারকে সহজে একত্রিত করে একটি সম্পূর্ণ অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Docker Compose একটি টুল যা ডেভেলপারদের জন্য কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি সহজে ডিফাইন এবং পরিচালনা করতে সাহায্য করে। এটি একটি YAML ফাইল ব্যবহার করে, যা একাধিক Docker কন্টেইনারের কনফিগারেশন এবং সম্পর্ক সেট আপ করার সুযোগ দেয়। Docker Compose-এর মাধ্যমে, আপনি একটি স্বতন্ত্র কনফিগারেশন ফাইলে আপনার অ্যাপ্লিকেশন এবং তার বিভিন্ন পরিষেবাগুলির নির্ভরতাগুলি নির্দিষ্ট করতে পারেন, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজতর করে।
বর্ণনা: Docker Compose আপনাকে একাধিক কন্টেইনারের একটি সেট আপ করার সুযোগ দেয়, যা একাধিক সার্ভিসের সমন্বয়ে গঠিত। এটি সাধারণত ডেভেলপমেন্ট, টেস্টিং এবং উৎপাদন পরিবেশে ব্যবহৃত হয়।
YAML ফাইল: Docker Compose একটি docker-compose.yml
ফাইল ব্যবহার করে, যেখানে সমস্ত সার্ভিস, নেটওয়ার্ক, এবং ভলিউমের কনফিগারেশন অন্তর্ভুক্ত থাকে।
কমান্ড: Docker Compose CLI এর মাধ্যমে বিভিন্ন কমান্ড ব্যবহার করে কন্টেইনারগুলি তৈরি, চালানো, এবং পরিচালনা করা যায়।
Docker ইনস্টলেশন: Docker Compose ব্যবহারের জন্য আপনার সিস্টেমে Docker ইনস্টল করা থাকতে হবে। Docker Compose Docker এর একটি অংশ, তাই Docker ইন্সটল হলে সাধারণত Docker Compose সহ আসে।
YAML ফাইল সম্পর্কে জানাশোনা: Docker Compose একটি YAML ফাইল ব্যবহার করে। তাই YAML ফাইলের গঠন এবং সিনট্যাক্স সম্পর্কে কিছু মৌলিক ধারণা থাকা দরকার।
কনটেইনার এবং সার্ভিস সম্পর্কে জানাশোনা: Docker Compose ব্যবহার করার আগে কনটেইনার এবং সার্ভিসের ধারণা বোঝা গুরুত্বপূর্ণ, কারণ এটি বিভিন্ন কন্টেইনারের মধ্যে যোগাযোগ এবং কার্যক্ষমতা নির্ধারণ করে।
CLI ব্যবহার: Docker Compose CLI এর মাধ্যমে পরিচালনা করা হয়। তাই CLI কমান্ডের সাথে পরিচিত থাকা দরকার।
সহজ কনফিগারেশন: একাধিক কন্টেইনারের জন্য কনফিগারেশন একটি YAML ফাইলে উল্লেখ করা যায়, যা পরিষ্কার এবং সংক্ষিপ্ত হয়।
একসাথে চলাচল: Docker Compose সমস্ত কন্টেইনারকে একসাথে শুরু এবং বন্ধ করার সুবিধা প্রদান করে, যা ডেভেলপমেন্ট এবং টেস্টিং প্রক্রিয়াকে সহজ করে।
পরিষেবাগুলির নির্ভরতাগুলি নির্ধারণ করা: পরিষেবাগুলির মধ্যে নির্ভরতাগুলি নির্ধারণ করা যায়, যাতে একটি পরিষেবা অন্য পরিষেবার উপর নির্ভরশীল হলে তা পরিচালনা করা সহজ হয়।
শক্তিশালী ডিপ্লয়মেন্ট: Docker Compose ডিপ্লয়মেন্টের জন্য সহজ উপায় সরবরাহ করে, যা অ্যাপ্লিকেশনকে ক্লাউড পরিবেশে বা স্বয়ংসম্পূর্ণ সার্ভারে পরিচালনা করতে সহায়ক।
Docker Compose হল একটি শক্তিশালী টুল যা একাধিক Docker কন্টেইনারের কনফিগারেশন এবং পরিচালনা সহজ করে। এটি YAML ফাইল ব্যবহার করে পরিষেবা এবং নির্ভরতাগুলির একটি পরিষ্কার কাঠামো প্রদান করে। Docker Compose ব্যবহারের জন্য Docker ইনস্টলেশন, YAML ফাইলের বোঝাপড়া, এবং কনটেইনার এবং সার্ভিস সম্পর্কে কিছু মৌলিক জ্ঞান থাকা প্রয়োজন। Docker Compose ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে অনেক সহজ এবং কার্যকর করে তোলে।
docker-compose.yml
ফাইলটি Docker Compose এর কনফিগারেশন ফাইল, যা YAML ফর্ম্যাটে লেখা হয়। এই ফাইলটি একাধিক Docker সার্ভিসের কনফিগারেশন সংজ্ঞায়িত করে, এবং এটি একটি অ্যাপ্লিকেশনকে চালানোর জন্য প্রয়োজনীয় সমস্ত তথ্য ধারণ করে। নিচে docker-compose.yml
ফাইলের মৌলিক গঠন এবং এর উপাদানগুলো বিস্তারিতভাবে আলোচনা করা হলো।
version: '3.8' # Docker Compose এর সংস্করণ
services: # সার্ভিস ডিফিনিশন শুরু
web: # সার্ভিসের নাম
image: nginx:latest # ব্যবহৃত Docker ইমেজ
ports: # পোর্ট ম্যাপিং
- "8080:80"
networks: # নেটওয়ার্ক যুক্ত করা
- my-network
db: # আরেকটি সার্ভিসের নাম
image: mysql:latest # ব্যবহৃত Docker ইমেজ
environment: # পরিবেশ ভেরিয়েবল
MYSQL_ROOT_PASSWORD: example
networks: # নেটওয়ার্ক যুক্ত করা
- my-network
cache: # তৃতীয় সার্ভিসের নাম
image: redis:latest # ব্যবহৃত Docker ইমেজ
networks: # নেটওয়ার্ক যুক্ত করা
- my-network
networks: # নেটওয়ার্ক ডিফিনিশন
my-network: # নেটওয়ার্কের নাম
version:
'3.8'
)।services:
service_name:
web
, db
, cache
ইত্যাদি। এটি সাধারণত কন্টেইনারের উদ্দেশ্য নির্দেশ করে।image:
nginx:latest
।ports:
"8080:80"
অর্থাৎ হোস্টের 8080 পোর্ট কন্টেইনারের 80 পোর্টের সাথে সংযুক্ত।networks:
environment:
MYSQL_ROOT_PASSWORD
ব্যবহার করা হয়েছে।networks:
my-network
নামে একটি নেটওয়ার্ক তৈরি করা হয়েছে।docker-compose.yml
ফাইলটি Docker Compose ব্যবহার করে অ্যাপ্লিকেশনটির সমস্ত সার্ভিস, কনফিগারেশন, এবং নেটওয়ার্কের জন্য একটি কেন্দ্রিয় কনফিগারেশন ফাইল। এর সঠিক গঠন এবং উপাদানগুলো বোঝার মাধ্যমে আপনি সহজেই বিভিন্ন সার্ভিসগুলিকে একটি সাথে পরিচালনা করতে পারবেন। Docker Compose ফাইল ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়া আরও কার্যকরী এবং সংগঠিত হয়ে ওঠে।
Docker Compose ব্যবহার করে একটি Multi-container Application তৈরি করা একটি সহজ এবং কার্যকর প্রক্রিয়া। এটি বিভিন্ন কন্টেইনারকে একত্রিত করে একটি স্বতন্ত্র অ্যাপ্লিকেশন তৈরি করতে সক্ষম করে, যেখানে প্রতিটি কন্টেইনার একটি নির্দিষ্ট পরিষেবা পরিচালনা করে। এখানে একটি উদাহরণ দেয়া হলো যা একটি ওয়েব অ্যাপ্লিকেশন, একটি ডেটাবেস এবং একটি ক্যাশ সার্ভার নিয়ে গঠিত।
আমরা একটি সাধারণ ওয়েব অ্যাপ্লিকেশন তৈরি করবো যা Flask (Python ফ্রেমওয়ার্ক) ব্যবহার করে এবং PostgreSQL ডেটাবেস এবং Redis ক্যাশ ব্যবহার করবে।
প্রথমে একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে যান:
mkdir my-multi-container-app
cd my-multi-container-app
একটি ফাইল তৈরি করুন app.py
নামে এবং নিচের কোড লিখুন:
from flask import Flask
import os
import psycopg2
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Flask!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
requirements.txt
তৈরি করাএকটি requirements.txt
ফাইল তৈরি করুন এবং নিচের লাইব্রেরিগুলি যুক্ত করুন:
Flask
psycopg2-binary
একটি Dockerfile
তৈরি করুন এবং নিম্নলিখিত কনটেন্ট যুক্ত করুন:
# বেস ইমেজ হিসাবে Python ব্যবহার করা হচ্ছে
FROM python:3.9-slim
# কাজের ডিরেক্টরি সেট করুন
WORKDIR /app
# প্রয়োজনীয় ফাইলগুলি কপি করুন
COPY requirements.txt .
# নির্ভরতাগুলি ইনস্টল করুন
RUN pip install -r requirements.txt
# অ্যাপ্লিকেশন কপি করুন
COPY . .
# ডিফল্ট কমান্ড নির্ধারণ করুন
CMD ["python", "app.py"]
docker-compose.yml
ফাইল তৈরি করাএখন, docker-compose.yml
ফাইল তৈরি করুন এবং নিচের কনটেন্ট যুক্ত করুন:
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
- cache
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
- db-data:/var/lib/postgresql/data
cache:
image: redis:latest
volumes:
db-data:
Docker Compose অ্যাপ্লিকেশন তৈরি করতে, নিচের কমান্ডটি ব্যবহার করুন:
docker-compose up --build
--build
ফ্ল্যাগটি নিশ্চিত করে যে Dockerfile থেকে নতুন ইমেজ তৈরি করা হবে।ব্রাউজারে গিয়ে http://localhost:5000
খুলুন। আপনি "Hello from Flask!" বার্তা দেখতে পাবেন।
কন্টেইনারগুলি বন্ধ করতে, নিচের কমান্ডটি ব্যবহার করুন:
docker-compose down
Docker Compose ব্যবহার করে Multi-container Application তৈরি করা সহজ এবং কার্যকর। উপরের উদাহরণে, একটি Flask অ্যাপ্লিকেশন, PostgreSQL ডেটাবেস এবং Redis ক্যাশ সার্ভার নিয়ে একটি অ্যাপ্লিকেশন তৈরি করা হয়েছে। docker-compose.yml
ফাইলটি সমস্ত সার্ভিস এবং নির্ভরতাগুলি সংজ্ঞায়িত করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজ করে তোলে। Docker Compose আপনার কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি কার্যকরভাবে পরিচালনা করতে সাহায্য করে।
Docker Compose কমান্ডগুলি ব্যবহার করে আপনি আপনার কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি তৈরি, পরিচালনা এবং ডিপ্লয় করতে পারেন। নিচে Docker Compose এর কিছু সাধারণ কমান্ড এবং তাদের উদাহরণ আলোচনা করা হলো।
এই কমান্ডটি docker-compose.yml
ফাইল থেকে সমস্ত সার্ভিস চালু করে।
docker-compose up
-d
ফ্ল্যাগটি কন্টেইনারগুলোকে ব্যাকগ্রাউন্ডে চালানোর জন্য ব্যবহৃত হয়।docker-compose up -d
এই কমান্ডটি সমস্ত চালু কন্টেইনার বন্ধ করে এবং তাদের পরিষ্কার করে।
docker-compose down
এই কমান্ডটি সমস্ত সার্ভিসের লগ দেখায়।
docker-compose logs
docker-compose logs web
এই কমান্ডটি চালু কন্টেইনারগুলোর একটি তালিকা প্রদর্শন করে।
docker-compose ps
এই কমান্ডটি আপনার docker-compose.yml
ফাইলের ভিত্তিতে নতুন ইমেজ তৈরি করে।
docker-compose build
এই কমান্ডটি চালু কন্টেইনারের মধ্যে একটি নতুন শেল চালু করে।
docker-compose exec web sh
web
হল সার্ভিসের নাম, এবং এটি sh
শেল চালু করবে।এই কমান্ডটি আপনার docker-compose.yml
ফাইলে উল্লেখিত ইমেজগুলো Docker Hub থেকে ডাউনলোড করে।
docker-compose pull
এই কমান্ডটি চালু সার্ভিসগুলো পুনরায় শুরু করে।
docker-compose restart
Docker Compose ব্যবহারের মাধ্যমে আপনি কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি সহজে পরিচালনা করতে পারেন। উপরের কমান্ডগুলো Docker Compose ব্যবহার করে বিভিন্ন কাজ সম্পন্ন করতে সাহায্য করে, যেমন কন্টেইনার শুরু করা, লগ দেখা, কন্টেইনার বন্ধ করা, এবং নতুন ইমেজ তৈরি করা। Docker Compose আপনার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে অনেক বেশি কার্যকরী করে তোলে।